Adaptive edge enhancement using directional components from non-linear filtering

ABSTRACT

A video processing device includes an input to receive pixel values for a set of pixels comprising a pixel window substantially centered around a select pixel that initially has a first pixel value. The video processing device further includes a first filter unit to determine a horizontal transient improvement value based on non-linear filtering of the pixel values in a horizontal direction, a second filter unit to determine a vertical transient improvement value based on non-linear filtering of the pixel values in a vertical direction, a third filter unit to determine a first diagonal transient improvement value based on non-linear filtering of the pixel values in a first diagonal direction, and a fourth filter unit to determine a second diagonal transient improvement value based on non-linear filtering of the pixel values in a second diagonal direction that is perpendicular to the first diagonal direction. The video processing device also includes an output to provide a second pixel value for the select pixel, the second pixel value based on the first pixel value, the vertical transient improvement value, the horizontal transient improvement value, the first diagonal transient improvement value, and the second diagonal transient improvement value.

FIELD OF THE DISCLOSURE

The present disclosure relates generally to video processing and moreparticularly to edge enhancement in video content.

BACKGROUND

Video systems often employ edge enhancement to improve image sharpness.Edge enhancement techniques typically employ sharpening spatial filterswhich are subject to considerable overshoot and undershoot, therebyintroducing “ringing” visual artifacts in the resulting image.Conventional approaches to reduce or eliminate undershoot and overshootare complex and involve substantial computational throughput, and thusare costly and inefficient to implement in video processing systems.

BRIEF DESCRIPTION OF THE DRAWINGS

The present disclosure may be better understood, and its numerousfeatures and advantages made apparent to those skilled in the art byreferencing the accompanying drawings. The use of the same referencesymbols in different drawings indicates similar or identical items.

FIG. 1 is a block diagram illustrating a video processing deviceemploying adaptive edge enhancement using directional components fromnon-linear filtering in accordance with at least one embodiment of thepresent disclosure.

FIG. 2 is a diagram illustrating an example implementation of adirectional filter unit of the edge enhancement unit of FIG. 1 inaccordance with at least one embodiment of the present disclosure.

FIG. 3 is a diagram illustrating an example implementation of atransient improvement module of the directional filter unit of FIG. 2 inaccordance with at least one embodiment of the present disclosure; and

FIG. 4 is a diagram illustrating an example system for implementing thevideo processing device of FIG. 1 in accordance with at least oneembodiment of the present disclosure.

DETAILED DESCRIPTION

FIGS. 1-4 illustrate exemplary techniques for edge enhancement in videoimages at a video processing device. In one embodiment, each of fourdirectional filter units determines a transient improvement value for acorresponding direction (horizontal, vertical, positive diagonal, andnegative diagonal) by applying non-linear filtering using those pixelvalues of a pixel window centered around a select pixel that arecollinear with the select pixel in a corresponding direction. Thenon-linear filtering can include determining a second-order derivativeapproximation between collinear pixels in the pixel window in thecorresponding direction and then scaling the second-order derivativeapproximation by a scaling value that is based on a first-orderderivative approximation between the collinear pixels so as to increasehigh-frequency components without substantially enhancing noise. Theresulting value of this scaling process is the direction-specifictransient improvement value for the corresponding direction. Thisdirection-specific transient improvement then may be summed with theoriginal pixel value of the select pixel, or a smoothed representationthereof, to generate a direction-specific enhanced pixel value for theselect pixel value. The transient improvement values determined foreeach of the four directions may be summed along with the original pixelvalue for the select pixel to determine a new, enhanced pixel value forthe select pixel. Further, in at least one embodiment, each directionalfilter unit additionally can include a shoot suppression module thatmonitors for potential undershoot or overshoot in the direction-specificenhanced pixel value generated by the directional filter unit, andprovide a dampened pixel value relating to either a maximum of thecollinear pixel values (for instances of overshoot) or the minimum ofthe collinear pixel values (for instances of undershoot) in place of theenhanced pixel value in the event that undershoot/overshoot is detected.Because the processes performed by the directional filter unit introducehigh-frequency components in the resulting edge-enhanced image, a linearunsharp mask can be applied to the generated stream of enhanced pixelvalues to enhance these high-frequency components in the resultingsharpened image.

FIG. 1 illustrates a video processing device 100 employing adaptivemulti-directional edge enhancement in accordance with at least oneembodiment of the present disclosure. The video processing device 100includes a pixel window buffer 102, an edge enhancement module 104, andan output buffer 105. The edge enhancement module 104 includes avertical filter unit 106, a horizontal filter unit 107, a positivediagonal filter unit 108, a negative diagonal filter unit 109, and asummation module 110. The edge enhancement module 104 further caninclude a linear unsharp mask (LUM) module 112. The functionality of thevarious modules of the video processing device 100 as illustrated inFIGS. 1-3 can be implemented as hardware, firmware, one or moreprocessors executing corresponding software, or a combination thereof.To illustrate, the functionality of certain components can beimplemented as discrete circuitry, an application specific integratedcircuit (ASIC), a field programmable gate array (FPGA), and the like,while other functions of certain components can be implemented one ormore processors of a processing system that execute softwareinstructions. Further, some or all of the components can implemented ina processing device designed based on a set of register-transfer-level(RTL) or Verilog instructions that define the functionality of theprocessing device and which are synthesized to generate the electricaland electronic design of the processing device.

In operation, the video processing device 100 receives input video datavia an input 118 and provides resulting edge-enhanced video data via anoutput 120. The pixel window buffer 102 buffers pixel data for pixels ofa plurality of lines of the input video data. The pixel data may beprovided or obtained from any of a variety of sources, such as a framebuffer at the output of a video decoder. Each of filter units 106-109 isconfigured to generate a corresponding direction-specific transientimprovement (TI) value for a select pixel in the pixel window buffer 102based on a non-linear filtering of a pixel window of pixel valuessubstantially surrounding the select pixel, whereby: the vertical filterunit 106 generates a transient improvement value TI_(V) based on anon-linear filtering of the pixel window in a vertical direction; thehorizontal filter unit 107 generates a transient improvement valueTI_(H) based on a non-linear filtering of the pixel window in ahorizontal direction; the positive diagonal filter unit 108 generates atransient improvement value TI_(D+) based on a non-linear filtering ofthe pixel window in a positive diagonal direction (e.g., +45 degrees);and the negative diagonal filter unit 109 generates a transientimprovement value TI_(D−) based on a non-linear filtering of the pixelwindow in a negative diagonal direction that is perpendicular to thepositive diagonal direction (e.g., −45 degrees). Each of the transientimprovement values TI_(V), TI_(H), TI_(D+), and TI_(D−) represents asharpness enhancement of the select pixel in the corresponding one ofthe vertical, horizontal, positive diagonal, and negative diagonaldirections. The summation module 110 then sums the original pixel value(OPV) initially associated with the select pixel with some or all of thedirection-specific transient improvement values TI_(V), TI_(H), TI_(D+),and TI_(D−) to generate an enhanced pixel value (EPV) for the selectpixel. This process then may be repeated for the next pixel to beedge-enhanced.

As described in greater detail below, the output stream of enhancedpixel values may have newly-introduced high frequency components due tothe non-linear nature of the transient improvement process performed bythe filter units 106-109. Accordingly, in one embodiment, the LUM module112 applies any of a variety of linear unsharp masks to the stream ofenhanced pixel values so as to control the gain of the newly-introducedhigh-frequency components. The resulting pixel value stream is bufferedin the output buffer 105 (which may include, for example, a framebuffer). The resulting enhanced pixel values generated by the videoprocessing device 100 then may be provided via the output 120 asedge-enhanced video data to another video processing device (e.g., adisplay controller, an encoder, etc.).

FIG. 2 illustrates an example implementation of a directional filterunit 200 for generating a transient improvement value for a select pixelin accordance with at least one embodiment of the present disclosure.The directional filter unit 200 corresponds to each of the filter units106-109, whereby the operations of the filter units 106-109 differ bythe direction employed, and thus pixel values used, in the non-linearfiltering process. As illustrated, the directional filter unit 200includes a two-dimensional (2D) smoothing filter 202, a transientimprovement module 204, and a subtraction module 206. The directionalfilter unit 200 further can include a multiplier module 208 for weighingor scaling the resulting transient improvement value by a programmabledirection-specific weighting value u_(x).

In the illustrated example, the non-linear filtering processes employedby the directional filter unit 200 are directed to a 3×3 pixel window210 that is centered around a select pixel 212 to be enhanced. The pixelvalue of the select pixel 212 is identified as “x22”; the pixel valuesof the pixel to the left of the select pixel 212 and to the right of theselect pixel 212 on the same line are identified as “x21” and “x23”,respectively; the pixel values of the pixels in the line above theselect pixel 212 are identified as “x11”, “x12”, and “x13” (left toright); and the pixel values of the pixels in the line below the selectpixel 212 are identified as “x31”, “x32”, and “x33” (left to right).These pixel values can include, for example, luminance values orchrominance values.

The use of a 3×3 pixel window is advantageous in that this window sizeinvolves relatively few pixel values and thus requires relatively lowcomputational effort to perform the processes described herein withrespect to the pixel window 210. Further, the vertical, horizontal, and+/−45 degree diagonal orientations are the only possible edgeorientations in a 3×3 pixel window and thus no detection of theorientation of a potential edge within the 3×3 pixel window is requiredfor sharpening purposes. However, while a 3×3 pixel window has theseadvantages in this particular context, the processes described hereinare not limited to this particular window size and instead can beextended to use of any of a variety of pixel window sizes using theguidelines provided herein and without departing from the scope of thepresent disclosure.

The 2D smoothing filter 202 of the directional filter unit 200 generatesa smoothed pixel value X[1] based on a linear smoothing/filtering of thepixel value x22 of the select pixel 212 through an application of afilter matrix that deemphasizes or avoids use of the pixel informationin the same orientation or direction of interest. To illustrate, foremployment of the directional filter unit 200 as the vertical filterunit 106 or the horizontal filter unit 107, a filter matrix H₁ isemployed so as to deemphasize the pixel information in the diagonaldirections of the pixel window 210:

$H_{1} = \begin{bmatrix}b & 0 & b \\0 & a & 0 \\b & 0 & b\end{bmatrix}$Conversely, for employment of the directional filter unit 200 as thepositive diagonal filter unit 108 or the negative diagonal filter unit109, a filter matrix H₂ is employed so as to deemphasize the pixelinformation in the horizontal and vertical directions of the pixelwindow 210:

$H_{2} = \begin{bmatrix}0 & d & 0 \\d & c & d \\0 & d & 0\end{bmatrix}$whereby the kernel components “a”, “b”, “c”, and “d” can comprise any ofa variety of suitable values identified through calculation or empiricalanalysis. The following values for the matrix components have been foundto provide acceptable results:

$a = \frac{\sqrt{2}}{2}$$b = {0.25*( {1 - \frac{\sqrt{2}}{2}} )}$ c = 0.5 d = 0.5

In accordance with the numbering scheme described above for the pixelvalues of the pixel window 210, the smoothing filter 202 applies theappropriate kernel filter H in accordance with the direction of interestto the pixel values of the pixel window 210 to generate the value X[1]based on calculations represented by the following equation:

${X\lbrack 1\rbrack} = {\sum\limits_{i,j}{H_{ij}*{xij}}}$

The transient improvement module 204 receives the value X[1] from thesmoothing filter 202, as well as the pixel values X[0] and X[2] ofpixels of the pixel window 210 on opposing, collinear sides of theselect pixel 212 in the particular direction of interest. As thevertical filter unit 106 provides vertical sharpness filtering, thetransient improvement module 204 of the vertical filter unit 106 woulduse the pixel values x12 and x32 for X[0] and X[2], respectively. Thehorizontal filter unit 107 provides horizontal sharpness filtering andthus the transient improvement module 204 of the horizontal filter 107would use the pixel values x21 and x23 for X[01] and X[2], respectively.The positive diagonal filter unit 108 provides sharpness filtering inthe +45 degree direction and thus the transient improvement module 204for the positive diagonal filter unit 108 would use the values x31 andx13 for X[0] and X[2], respectively. The negative diagonal filter unit109 provides sharpness in the −45 degree direction and thus thetransient improvement module 204 for the negative diagonal filter unit109 would use the values x11 and x33 for X[0] and X[2], respectively.Table 1 summarizes the particular relationship between the generalizedinputs of the directional filter unit 200 and the particularimplementations for the horizontal, vertical, positive diagonal, andnegative diagonal directions:

TABLE 1 Value Vertical Horizontal +45 Diagonal −45 Diagonal X[0] x12 x21x31 x11 X[1] H₁ filter H₁ filter H₂ filter H₂ filter matrix matrixmatrix matrix X[2] x32 x23 x13 x33Because the vertical and horizontal filter units 106 and 107 use thesame filter matrix and thus use the same smoothed pixel value for X[1],the vertical and horizontal filter units 106 and 107 can share theoutput of a single 2D smoothing filter. For the same reason, thediagonal filter units 108 and 109 can share the output of a single 2Dsmoothing filter.

Using the smoothed middle pixel value X[1] and the collinear pixelvalues X[0] and X[2] in the direction of interest, the transientimprovement module 204 performs a non-linear filter process, describedin greater detail below, to generate a direction-specific enhanced valuex22′ that represents a sharpness enhancement to the original pixel valuex22 of the select pixel 212 in the direction of interest; that is,x22′=x22+TI_(x). Thus, to obtain the direction-specific transientimprovement value TI_(x) as a separate value, the subtraction module 206subtracts the original pixel value x22 from the enhanced pixel valuex22′; that is TI_(x)=x22′−x22. In certain instances, it may beadvantageous to weight the transient improvement value TI_(x) by aprogrammable weighting value u_(x), whereby the particular weightingvalue can be independently programmed for each filtering direction andwhich can be determined through calculation or through empiricalanalysis. Accordingly, the weighting module 208 can generate a weightedtransient improvement value through the multiplication of the transientimprovement value TI_(x) and the weighting value u_(x). An example valuefor the weighting value u_(x) of ⅓ for each direction has been found toprovide effective results. Reference herein to the transient improvementvalue provided by a directional filtering unit can include either anunweighted transient improvement value or a weighted transientimprovement value unless noted otherwise.

FIG. 3 illustrates an example implementation of the transientimprovement module 204 of the directional filter unit 200 of FIG. 2 inaccordance with at least one embodiment of the present disclosure. Inthe depicted example, the transient improvement module 204 includes afirst-order derivative module 302, a second-order derivative module 304,a coring filter 306, a gain control module 308, a multiplier 310, anadder 312, and a shoot suppression module 314. The shoot suppressionmodule 314 includes a factor calculation module 316, a min/max module318, selection logic 320, and a multiplexer 324.

In operation, the first-order derivative module 302 and the second-orderderivative module 304 determine approximations of the first-order andsecond-order derivatives, respectively, of the smoothed middle pixelvalue X[1] and the two collinear pixel values X[0] and X[2] using, forexample, the operators:

$\frac{\partial x}{\partial n} \cong {{0.5*{x( {n + 1} )}} - {0.5*{x( {n - 1} )}} - \frac{\partial^{2}x}{\partial n^{2}}} \cong {0 - {0.25*{x( {n + 1} )}} + {0.5*{x(n)}} - {0.25{x( {n - 1} )}}}$whereby the second-order derivative module 304 determines a negativeapproximation of the second-order derivative for convenience. It will beappreciated that, in this context, the first-order derivative is zero inareas of constant intensity, non-zero in areas of an onset of a changein intensity, and non-zero along changes in intensity, whereas thesecond-order derivative is zero in areas of areas of constant intensityand areas of constant change in intensity, and non-zero at the onset andend of a change in intensity. As such, the first-order derivativeapproximation is useful as an indicator of an edge in the local imageregion represented by the pixel window 210, and the second-orderderivative approximation is useful as an indicator of the borders of theedge.

In a conventional edge-enhancement process using a typical linearunsharp mask (LUM), the negative of the second-order derivativeapproximation value simply would be scaled and added to the originalpixel value to generate an enhanced value for the pixel at issue.However, this approach results in visual artifacts of ringing (due tointroduced over/undershoot) and noise enhancement. To avoid such issues,the transient improvement module 204 employs the coring filter 306 tofilter out noise by setting an output value c(n) to zero if the absolutevalue of the second-order derivative approximation value is below acertain threshold, and otherwise outputting the negative of thesecond-order derivative approximation value as the output value c(n).

To reduce ringing and to further guard against noise, the gain controlmodule 308 uses a measurement of the local region to control an amountof high-frequency component added to the transient value TI_(x)generated by the transient improvement module 204 through use of a gainvalue g(n) used to scale the output value c(n) by the multiplier module310. As such, the gain control module 308 uses the absolute value of thefirst-order derivative approximation (denoted k(n) in FIG. 3) to assessthe slope of the local region in the direction of interest. Asillustrated by chart 320, which depicts an example correlation betweenthe input values for k(n) to corresponding output values for a gainvalue g(n) output by the gain control module 308, the relationshipbetween the absolute value of the first-order derivative approximationvalue k(n) and the gain control value g(n) provided by the gain controlmodule 308 can have a relatively bell-shaped curve such that the gaincontrol value g(n) is relatively small where k(n) is relatively small orrelatively large, and the gain control value g(n) is relatively largewhere k(n) falls between these two extremes. The purpose of thisrelationship is to deemphasize the transient improvement value throughthe gain control value g(n) when there is potential for over/undershootand noise when no further sharpening of the pixel would be advantageous.To illustrate, if the slope represented by the first-order derivativeapproximation value is relatively high (and thus represented by the farright of the chart 320), the represented edge likely is alreadysufficiently sharp and any further sharpening likely will result inringing, and if the slope is relatively small (and thus represented bythe far left of the chart 320), there likely is no significant edge inthe region and thus an attempt to sharpen the region likely will onlyresult in increased noise. Accordingly, the gain control module 308scales back the gain control value g(n) in such instances. In oneembodiment, the gain control module 308 implements the relationshipbetween the input first-order derivative approximation value k(n) andthe corresponding gain control value g(n) as a look-up table or otherdata structure linking a particular value for k(n) to a particular valuefor g(n) in accordance with a desired emphasis relationship, such asthat shown by chart 320.

The gain control value g(n) is used to control the gain of ahigh-frequency component c(n) generated through a multiplication of thesecond-order derivative approximation value c(n) and the gain controlvalue g(n) by the multiplier module 310 to generate a scaled value a(n);that is, a(n)=g(n)*c(n). A digital multiplier 322 can multiply thescaled value a(n) by a programmable constant gain factor α and then addthe resulting scaled value α*a(n) to the original smoothed pixel valueX[1] to generate an enhanced pixel value X_(c)(n), wherebyXc(n)=x22+α*a(n) and thus α*a(n) represents a potential value for thetransient improvement value T_(x) in the direction of interest.

In one embodiment, the enhanced pixel value X_(c)(n) can be output asthe direction-specific edge-enhanced value x22′ for the select pixel 212without further processing. However, the processes used to generate theenhanced pixel value X_(c)(n) may potentially be subject to some degreeof undershoot/overshoot. Accordingly, in an alternate embodiment, theshoot suppression module 314 is used to check for undershoot/overshootand then dampen the enhanced pixel value X_(c)(n) in the event thatundershoot/overshoot is detected. In operation, the min/max module 318determines the minimum value (“xmin”) and the maximum value (“xmax”) ofX[0], X[1], and X[2], and scales these extrema and the smoothed pixelvalue X[1] by a factor R, and then sums the results based oncalculations represented by the following equations to generate twodampened values D_(U) and D_(O):D _(U) =xmin*R+(1−R)*X[1]D _(O) =xmax*R+(1−R)*X[1]As such, the factor R is used to control under/overshoot, therebycontrolling the amount of ringing in the final output. In oneembodiment, the factor calculation module 316 calculates the factor R byscaling the absolute values of the first-order derivative approximationand the second-order derivative approximation by programmable weights a₁and a₂, respectively, summing the scaled results with a value a₀ (whichmay be zero), and then squaring the sum in accordance with the processesrepresented the equation:

$R = ( {a_{0} + {a_{1}{\frac{\partial x}{\partial n}}} + {a_{2}{\frac{\partial^{2}x}{\partial n^{2}}}}} )^{2}$If there is a large edge present in the pixel window, R will berelatively large and the output will be limited to xmax or xmin. Ifthere is a small edge, R will be relatively small and output will belimited to input value. As such, the value of R is a measure of strengthof the edge.

The dampened values D_(O) and D_(U) and the enhanced pixel valueX_(c)(n) are provided as inputs to the multiplexer 324, the output ofwhich is the direction-specific enhanced pixel value x22′ for the selectpixel 212 (FIG. 2). Thus, the possible values for the enhanced pixelvalue x22′ are the overshoot dampened value D_(o), the undershootdampened value D_(U), and the enhanced pixel value X_(c)(n). To selectbetween these values, the selection logic 320 analyzes the potential forundershoot/overshoot by analyzing the local extrema xmin and xmax inrelation to the value X_(c)(n), which, as noted above, represents thesecond-order derivative approximation and thus is indicative of theborders of an edge region. A value of c(n) that is less than zeroindicates that the select pixel 212 is at the bottom of a rising edgeand thus the value X_(c)(n) is compared with xmin to determine whetherundershoot is present. In the event that the value X_(c)(n) is less thanxmin, thereby indicating undershoot, the select logic 320 controls themultiplexer 324 to output the undershoot dampened value D_(U) as theenhanced pixel value x22′. Conversely, the value of c(n) being 0 orgreater indicates that the select pixel 212 is at the top of a risingedge, and thus the value of X_(c)(n) is compared with xmax to determinewhether overshoot is present. In the event that the value of X_(c)(n) isgreater than xmax, thereby indicating overshoot, the select logic 320controls the multiplexer 324 to output the overshoot dampened valueD_(O) as the enhanced pixel value x22′. Instances whereby the valueX_(c)(n) is less than xmax when c(n) is 0 or greater or the value ofX_(c)(n) is greater than xmin when c(n) is less than zero indicate thatthe select pixel 212 is not near the borders of an edge and thus theselect logic 320 controls the multiplexer 324 to output the enhancedpixel X_(c)(n) as the direction-specific enhanced pixel value x22′ forthe select pixel 212.

The damping process provided by the shoot suppression module 314 has anon-linear affect and thus can introduce new high frequency componentsinto the output stream of enhanced pixel values. Accordingly, as notedabove, the LUM module 112 (FIG. 1) can be used to filter thenon-linearities introduced by the shoot suppression process so as toaccentuate the high-frequency components of the enhanced pixel stream

As noted above, the modules of the video processing device 100 of FIGS.1-3 can be implemented as hardware. However, in addition to hardwareimplementations adapted to perform the functionality in accordance withone of the embodiments of the present disclosure, such modules may alsobe embodied in one or more processors configured to execute instructionsin software disposed, for example, in a computer usable (e.g., readable)medium configured to store the software (e.g., a computer readableprogram code). The program code causes the enablement of embodiments ofthe present invention, including the following embodiments: (i) thefunctions of the devices and methods disclosed herein (such as devicesand methods upscaling/deinterlacing video); (ii) the fabrication of thedevices and methods disclosed herein (such as the fabrication of devicesthat are enabled to upscale or deinterlace video); or (iii) acombination of the functions and fabrication of the devices and methodsdisclosed herein.

For example, this can be accomplished through the use of generalprogramming languages (such as C or C++), hardware description languages(HDL) including Verilog, Verilog-A, HDL, VHDL, Altera HDL (AHDL) and soon, or other available programming and/or schematic capture tools (suchas circuit capture tools). The program code can be disposed in any knowncomputer usable medium including semiconductor, magnetic disk, opticaldisk (such as CD-ROM, DVD-ROM) and as a computer data signal embodied ina computer usable (e.g., readable) transmission medium (such as adigital, optical, or analog-based medium). It is understood that thefunctions accomplished and/or structure provided by the systems andtechniques described above can be represented in a core (such as a GPUcore) that is embodied in program code and may be transformed tohardware as part of the production of integrated circuits.

FIG. 4 illustrates a processing system 400 in accordance with at leastone embodiment of the present disclosure. The processing system 400 caninclude a set of instructions that can be executed to manipulate theprocessing system 400 to perform any one or more of the methods orfunctions disclosed herein. The processing system 400 may operate as astandalone device or may be connected, e.g., using a network, to otherprocessor devices or peripheral devices.

In a networked deployment, the processor device may operate in thecapacity of a server or as a client user computer in a server-clientuser network environment, or as a peer processor device in apeer-to-peer (or distributed) network environment. The processing system400 can also be implemented as or incorporated into, for example, aportable display device. Further, while a single processing system 400is illustrated, the term “system” shall also be taken to include anycollection of systems or sub-systems that individually or jointlyexecute a set, or multiple sets, of instructions to perform one or morecomputer functions.

The processing system 400 may include a processor 402, e.g., a centralprocessing unit (CPU), a graphics processing unit (GPU), or both.Moreover, the processing system 400 can include a main memory 404 and astatic memory 406 that can communicate with each other via a bus 408. Asshown, the processing system 400 may further include a video displayunit 410, such as a liquid crystal display (LCD), an organic lightemitting diode (OLED), a flat panel display, a solid state display, or acathode ray tube (CRT). Additionally, the processing system 400 mayinclude an input device 412, such as a keyboard, and a cursor controldevice 414, such as a mouse. The processing system 400 can also includea disk drive unit 416, a signal generation device 418, such as aspeaker, and a network interface device 420.

In a particular embodiment, as depicted in FIG. 4, the disk drive unit416 may include a computer readable storage device 422 in which one ormore sets of instructions 424, e.g. software, can be embedded. Further,the instructions 424 may embody one or more of the methods or logic asdescribed herein. In a particular embodiment, the instructions 424 mayreside completely, or at least partially, within the main memory 404,the static memory 406, and/or within the processor 402 during executionby the processing system 400. The main memory 404 and the processor 402also may include computer readable media. The network interface device420 can provide connectivity to a network 426, e.g., a wide area network(WAN), a local area network (LAN), or other network.

In an alternative embodiment, dedicated hardware implementations such asapplication specific integrated circuits, programmable logic arrays andother hardware devices can be constructed to implement one or more ofthe methods described herein. Applications that may include theapparatus and systems of various embodiments can broadly include avariety of electronic and processor devices. One or more embodimentsdescribed herein may implement functions using two or more specificinterconnected hardware modules or devices with related control and datasignals that can be communicated between and through the modules, or asportions of an application-specific integrated circuit. Accordingly, thepresent system encompasses software, firmware, and hardwareimplementations.

In accordance with various embodiments of the present disclosure, themethods described herein may be implemented, in whole or in part, bysoftware programs executable by a processor device. The presentdisclosure contemplates a computer readable storage device that includesinstructions or receives and provides instructions for executionresponsive to a propagated signal, so that a device connected to anetwork can communicate voice, video or data over the network 426.Further, the instructions 424 may be transmitted or received over thenetwork 426 via the network interface device 420.

In one embodiment, rather than being software instructions that directlyimplement the functionality described herein, the instructions 424instead can implement design instructions representative of a hardwareimplementation of the above-described functionality that are thensynthesized to determine the electrical and electronic design for aprocessing device that implements the above-described invention. Toillustrate, these hardware-design instructions can include registertransfer level (RTL) instructions, Verilog instructions, and the like.

While the computer readable storage device is shown to be a singlestorage device, the term “computer readable storage device” includes asingle storage device or multiple storage devices, such as a centralizedor distributed database, and/or associated caches and servers that storeone or more sets of instructions. The term “computer readable storagedevice” shall also include any storage device that is capable of storinga set of instructions for execution by a processor or that cause aprocessor device to perform any one or more of the methods or operationsdisclosed herein.

In a particular embodiment, the computer readable storage device caninclude a solid-state memory such as a memory card or other package thathouses one or more non-volatile read-only memories. Further, thecomputer readable storage device can be a random access memory or othervolatile re-writeable memory. Additionally, the computer readablestorage device can include a magneto-optical or optical medium.Accordingly, the disclosure is considered to include any one or more ofa computer readable storage device or a distribution medium and otherequivalents and successor media, in which data or instructions may bestored.

The term “another”, as used herein, is defined as at least a second ormore. The terms “including”, “having”, or any variation thereof, as usedherein, are defined as comprising. The term “coupled”, as used hereinwith reference to electro-optical technology, is defined as connected,although not necessarily directly, and not necessarily mechanically.

Other embodiments, uses, and advantages of the disclosure will beapparent to those skilled in the art from consideration of thespecification and practice of the disclosure disclosed herein. Thespecification and drawings should be considered exemplary only, and thescope of the disclosure is accordingly intended to be limited only bythe following claims and equivalents thereof.

1. A video processing device comprising: an input to receive pixelvalues for a set of pixels, the set of pixel values comprising a pixelwindow substantially centered around a select pixel that initially has afirst pixel value; a first filter unit to determine a horizontaltransient improvement value based on a first non-linear filtering of thepixel values in a horizontal direction of the pixel window, the firstnon-linear filtering comprising determining a second-order derivativeapproximation between pixels in the set of pixels that are collinearwith the select pixel in the horizontal direction; a second filter unitto determine a vertical transient improvement value based on a secondnon-linear filtering of the pixel values in a vertical direction of thepixel window, the second non-linear filtering comprising determining asecond-order derivative approximation between pixels in the set ofpixels that are collinear with the select pixel in the verticaldirection; a third filter unit to determine a first diagonal transientimprovement value based on a third non-linear filtering of the pixelvalues in a first diagonal direction of the pixel window, the thirdnon-linear filtering comprising determining a second-order derivativeapproximation between pixels in the set of pixels that are collinearwith the select pixel in the first diagonal direction; and an output toprovide a second pixel value for the select pixel, the second pixelvalue based on the first pixel value, the vertical transient improvementvalue, the horizontal transient improvement value, and the firstdiagonal transient improvement value.
 2. The video processing device ofclaim 1, further comprising: a fourth filter unit to determine a seconddiagonal transient improvement value based on fourth non-linearfiltering of the pixel values in a second diagonal direction of thepixel window, the second diagonal direction perpendicular to the firstdiagonal direction and the fourth non-linear filtering comprising adetermining a second-order derivative approximation between pixels inthe set of pixels that are collinear with the select pixel in the seconddiagonal direction; and wherein the second pixel value for the selectpixel is further based on the second diagonal transient improvementvalue.
 3. The video processing device of claim 2, further comprising: asummation module to generate the second pixel value based on a sum of atleast the first pixel value, the vertical transient improvement value,the horizontal transient improvement value, the first diagonal transientimprovement value, and the second diagonal transient improvement value.4. The video processing device of claim 1, further comprising: asummation module to generate a third pixel value based on a sum of atleast the first pixel value; the vertical transient improvement value,the horizontal transient improvement value, and the first diagonaltransient improvement value; and a linear unsharp mask module togenerate the second pixel value based on an application of a linearunsharp mask to the third pixel value.
 5. A video processing devicecomprising: an input to receive pixel values for a set of pixels, theset of pixel values comprising a pixel window substantially centeredaround a select pixel that initially has a first pixel value; a firstfilter unit to determine a horizontal transient improvement value basedon non-linear filtering of the pixel values in a horizontal direction ofthe pixel window; a second filter unit to determine a vertical transientimprovement value based on non-linear filtering of the pixel values in avertical direction of the pixel window; a third filter unit to determinea first diagonal transient improvement value based on non-linearfiltering of the pixel values in a first diagonal direction of the pixelwindow; wherein each of the first filter unit, the second filter unit,and third filter unit comprises: a two-dimensional (2D) filter togenerate a corresponding smoothed pixel value representative of theselect pixel; and a transient improvement module having a first input toreceive the corresponding smoothed pixel value, a second input toreceive a first corresponding pixel value of a first pixel of the set ofpixels that is collinear with the select pixel with respect to acorresponding direction, a third input to receive a second correspondingpixel value of a second pixel of the set of pixels that is collinearwith the select pixel with respect to the corresponding direction, andan output to provide a corresponding transient improvement value basedon non-linear filtering using the corresponding smoothed pixel value,the first corresponding pixel value, and the second corresponding pixelvalue.
 6. The video processing device of claim 5, wherein: the firstpixel and second pixel are horizontally collinear to the select pixelfor the transient improvement module of the first filter unit; the firstpixel and second pixel are vertically collinear to the select pixel forthe transient improvement module of the second filter unit; the firstpixel and second pixel are diagonally collinear to the select pixel forthe transient improvement module of the third filter unit; the 2D filterof each of the first filter unit and the second filter unit is to applya first filter matrix to the pixel window to generate the correspondingsmoothed pixel value, the first filter matrix deemphasizing the pixelsof the pixel window that are vertically collinear and horizontallycollinear to the select pixel; and the 2D filter of the third filterunit is to apply a second filter matrix to the pixel window to generatethe corresponding smoothed pixel value, the second filter matrixdeemphasizing the pixels of the pixel window that are diagonallycollinear to the select pixel.
 7. The video processing device of claim5, wherein the transient improvement module comprises: a first-orderderivative module to generate a first value approximating a first-orderderivative using the corresponding smoothed pixel value, the firstcorresponding pixel value, and the second corresponding pixel value; asecond-order derivative module to generate a second value approximatinga second-order derivative using the corresponding smoothed pixel value,the first corresponding pixel value, and the second corresponding pixelvalue; a gain control module to generate a scaling value based on thefirst value; and a multiplier module to generate a third value based ona scaling of the second value by the first value, the third valuerepresentative of the corresponding transient improvement value.
 8. Thevideo processing device of claim 7, further comprising: a shootsuppression module to provide, as a value representing the correspondingtransient improvement value, a select one of the third value, a fourthvalue, or a fifth value based on the second value; wherein the fourthvalue is based on a scaling factor, the corresponding smoothing value,and a maximum value of the corresponding smoothing value, the firstcorresponding value, and the second corresponding value; and wherein thefifth value is based on the scaling factor, the corresponding smoothingvalue, and a minimum value of the corresponding smoothing value, thefirst corresponding value, and the second corresponding value.
 9. Thevideo processing device of claim 7, wherein the shoot suppression modulecomprises: a factor calculation module to determine the scaling factorbased on the first value and the second value; and selection logic toselect from the third value, the fourth value, and the fifth value asthe value representing the corresponding transient improvement valuebased on comparisons of the second value to the minimum value and themaximum value.
 10. The video processing device of claim 1, wherein thepixel window comprises a 3×3 pixel window.
 11. The video processingdevice of claim 5, further comprising: a summation module to generatethe second pixel value based on a sum of at least the first pixel value,the vertical transient improvement value, the horizontal transientimprovement value, and the first diagonal transient improvement value.12. The video processing device of claim 5, further comprising: asummation module to generate a third pixel value based on a sum of atleast the first pixel value, the vertical transient improvement value,the horizontal transient improvement value, and the first diagonaltransient improvement value; and a linear unsharp mask module togenerate the second pixel value based on an application of a linearunsharp mask to the third pixel value.
 13. The video processing deviceof claim 5, wherein the pixel window comprises a 3×3 pixel window.
 14. Amethod comprising: receiving, at a video processing device, pixel valuesfor a set of pixels, the set of pixels comprising a pixel windowsubstantially centered around a select pixel that initially has a firstpixel value; determining a horizontal transient improvement value basedon a first non-linear filtering of the pixel values in a horizontaldirection of the pixel window, the first non-linear filtering comprisingdetermining a second-order derivative approximation between pixels inthe set of pixels that are collinear with the select pixel in thehorizontal direction; determining a vertical transient improvement valuebased on a second non-linear filtering of the pixel values in a verticaldirection of the pixel window, the second non-linear filteringcomprising determining a second-order derivative approximation betweenpixels in the set of pixels that are collinear with the select pixel inthe horizontal direction; determining a first diagonal transientimprovement value based on a third non-linear filtering of the pixelvalues in a first diagonal direction of the pixel window, the thirdfirst non-linear filtering comprising determining a second-orderderivative approximation between pixels in the set of pixels that arecollinear with the select pixel in the first diagonal direction; andgenerating a second pixel value for the select pixel, the second pixelvalue based on the first pixel value, the vertical transient improvementvalue, the horizontal transient improvement value, and the firstdiagonal transient improvement value.
 15. The method of claim 14,further comprising: determining a second diagonal transient improvementvalue based on a fourth non-linear filtering of the pixel values in asecond diagonal direction of the pixel window, the second diagonaldirection perpendicular to the first diagonal direction, and the fourthnon-linear filtering comprising determining a second-order derivativeapproximation between pixels in the set of pixels that are collinearwith the select pixel in the second diagonal direction; and whereingenerating the second pixel value comprises generating the second pixelvalue further based on the second diagonal transient improvement value.16. The method of claim 14, wherein generating the second pixel valuecomprises generating the second pixel value based on a sum of at leastthe first pixel value, the vertical transient improvement value, thehorizontal transient improvement value, and the first diagonal transientimprovement value.
 17. The method of claim 16, wherein generating thesecond pixel value further comprises applying a linear unsharp mask tothe sum.
 18. A method comprising: receiving, at a video processingdevice, pixel values for a set of pixels, the set of pixels comprising apixel window substantially centered around a select pixel that initiallyhas a first pixel value; generating a first smoothed pixel valuerepresentative of the select pixel using a first filter matrix thatdeemphasizes the pixels of the pixel window that are horizontallycollinear or vertically collinear to the select pixel; generating asecond smoothed pixel value representative of the select pixel using asecond filter matrix that deemphasizes the pixels of the pixel windowthat are diagonally collinear to the select pixel; determining ahorizontal transient improvement value based on the first smoothed pixelvalue and based on a pixel value of each of two pixels of the set ofpixels that are horizontally collinear with the select pixel;determining a vertical transient improvement value based on the firstsmoothed pixel value and based on a pixel value of each of two pixels ofthe set of pixels that are vertically collinear with the select pixel;determining a first diagonal transient improvement value based on thesecond smoothed pixel value and based on a pixel value of each of twopixels of the set of pixels that are positively diagonally collinearwith the select pixel; and generating a second pixel value for theselect pixel, the second pixel value based on the first pixel value, thevertical transient improvement value, the horizontal transientimprovement value, and the first diagonal transient improvement value.19. The method of claim 18, wherein determining a corresponding one ofthe horizontal, vertical, and first diagonal transient improvementvalues comprises: generating a first value approximating a first-orderderivative of a corresponding smoothing value of the first or secondsmoothed pixel values, and pixel values of two corresponding collinearpixels of the first set of pixels; generating a second valueapproximating a second-order derivative of the corresponding smoothedpixel value and the pixel values of the two corresponding collinearpixels; determining a scaling value based on the first value; andgenerating a third value based on a scaling of the second value by thefirst value, the third value representative of the correspondingtransient improvement value.
 20. The method of claim 19, furthercomprising: determining a scaling factor based on a sum of the firstvalue and the second value; determining a fourth value based on thescaling factor, the corresponding smoothing value, and a maximum valueof the corresponding smoothing value, the first corresponding value, andthe second corresponding value; determining a fifth value based on thescaling factor, the corresponding smoothing value, and a minimum valueof the corresponding smoothing value, the first corresponding value, andthe second corresponding value; and providing, as a value representingthe corresponding transient improvement value, a select one of the thirdvalue, a fourth value, or a fifth value based on a comparison of thesecond value to at least one of the minimum value or the maximum value.21. An edge-enhancement filter unit comprising: an input to receivepixel values for a set of pixels, the set of pixels comprising a pixelwindow substantially centered around a select pixel; an output toprovide a direction-specific transient improvement value for edgeenhancement of the select pixel; a two-dimensional filter module toapply a filter matrix to the pixels values to generate a smoothed pixelvalue for the select pixel; and a transient improvement modulecomprising: an input to receive the smoothed pixel value, a first pixelvalue for a first pixel collinear with the select pixel with respect toa corresponding direction, and a second pixel value for a second pixelcollinear with the select pixel with respect to the correspondingdirection; a first-order derivative module to generate a first valueapproximating a first-order derivative of the smoothed pixel value, thefirst pixel value, and the second pixel value; a second-order derivativemodule to generate a second value approximating a second-orderderivative of the smoothed pixel value, the first pixel value, and thesecond pixel value; a coring filter to generate a third value based onthe second value, wherein the coring filter is to provide a value ofzero as the third value responsive to the second value falling within apredetermined range and to provide the second value as the third valueresponsive to the second value falling outside the predetermined range;a look-up table to provide a fourth value based on the first value; anda multiplier to generate a fifth value by multiplying the fourth valueby the third value; wherein the direction-specific transient improvementvalue is based on the fifth value.
 22. The edge enhancement filter unitof claim 21, further comprising: a shoot suppression module comprising:an input to receive the smoothed pixel value, the first pixel value, andthe second pixel value; a min/max module to generate sixth value basedon a scaling factor, the smoothing value, and a maximum value of thesmoothing value, the first pixel value, and the second pixel value andto generate seventh value based on the scaling factor, the smoothingvalue, and a minimum value of the smoothing value, the first pixelvalue, and the second pixel value; selection logic to generate controlsignaling based on a comparison of the fifth value to at least one ofthe maximum value and the minimum value; and a multiplexer to output asthe direction-specific transient improvement value a select one of thefifth value, the sixth value, or the seventh value based on the controlsignaling.
 23. The edge enhancement filter unit of claim 21, wherein theshoot suppression module further is to determine the scaling factorbased on a sum of the first value and the second value.